<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!--//$Id$ -->
</head>
<body>
<b><font size="5">Quoter example README</font></b>
<p>To download the source codes of this example please refer to the SVN
repository at <code>$CIAO_ROOT\docs\tutorials\Quoter\Simple</code>
</p>
<hr>
<h2>Example Description</h2>
<div align="left">
<font face="Times New Roman" size="3">The <b>StockDistributor</b>
component would be monitoring a real-time stock database. When the
values of particular stocks change, it pushes a CCM <b>eventtype</b>
that contains the stock's name via a CCM event source to the
corresponding CCM </font>
</div>
<div align="left">
<font face="Times New Roman" size="3">event sink implemented by one or
more <b>StockBroker</b> components. If these components are interested
in the stock they can obtain more information about it by invoking a
request/response operation via their CCM receptacle on a CCM facet
exported by the <b>StockDistributor</b> component. The diagram of this
example is shown in fig 1.</font>
</div>
<p align="center"><img alt="" src="images/quoter.jpg"
 style="width: 362px; height: 212px;"><br>
figure 1<br>
</p>
<h2 align="justify"><span style="font-weight: 400;"><font size="3"></font></span><span
 style="font-weight: 400;"><font size="3">This example
is based on a series of&nbsp;</font> <a
 href="http://www.cs.wustl.edu/%7Eschmidt/report-doc.html"><font
 size="3">CORBA Component Model</font></a><font size="3"> columns
written by <a href="http://www.cs.wustl.edu/%7Eschmidt/">Douglas
Schmidt</a> and <a href="http://www.iona.com/hyplan/vinoski/">Steve
Vinoski</a>, and has been consistently used as a example for <a
 href="http://www.cs.wustl.edu/%7Eschmidt/TAO.html">TAO</a>. Please
refer to <a
 href="../../../../../docs/tutorials/Quoter/index.html">TAO
online tutorial</a> for details. <br>
</font></span></h2>
<h2>The files you will find</h2>
<li>The interfaces, data types and exceptions shared by the components
of
this
application are specified in the <a href="Stock_Base/Stock_Base.idl"><code>Stock_Base.idl</code></a>.<code></code>The
lib
generated
from Stock_Base.idl is linked to all the components of this example.</li>
<li>&nbsp;mpc files for each of the components are available in the
components
directories. We use the&nbsp; <a
 href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">MPC</a>
to
generate makefiles and Visual C++ project/solutions files for all <a
 href="http://www.cs.wustl.edu/%7Eschmidt/ACE.html">ACE</a>, <a
 href="http://www.cs.wustl.edu/%7Eschmidt/TAO.html">TAO</a> and <a
 href="http://www.cs.wustl.edu/%7Eschmidt/CIAO.html">CIAO</a>
libraries. </li>
<li>&nbsp;idl and cidl files for each component are placed in
components directory.
</li>
<li>&nbsp;The <code>_exec.h</code> and <code>_exec.cpp</code> files
are the actual
implementation of the components.</li>
<hr>
<h3><font size="5">Make</font></h3>
Navigate to&nbsp; the directory <code>$CIAO_ROOT/docs/tutorials/Quoter/Simple</code>
and do:<br>
<code>$ACE_ROOT/bin/mwc.pl -type gnuace</code> (use different -type option 
if you are using a
compiler/IDE other than GNU make) <br>
For example, use <code>%ACE_ROOT%/bin/mwc.pl -type vc71</code> if you
are using
Visual C++ 7.1 IDE.<br>
<br>
Then build/make the generated project/make files. Correct errors in the
source codes if necessary.<br>
<hr>
<h3><font size="5">Assemble</font></h3>
<p>Now we can step forward to build the assembly. </p>
<li>In the descriptor subdirectory, you'll find a XML descriptor file
that
describes your <em>deployment plan</em>, the
flattened_deploymentplan.cdp. This file declaratively specifies how the
component assembly is
constructed.
Specifically, it defines the component types, component instances,
component
connections and implementation artifact descriptions. <br>
</li>
<dd>
&nbsp;<li>Please make sure that the Modified_Deployment.xsd and XMI.xsd
files
are in the Display/descriptors directory. The former file could be
found in $CIAO_ROOT/docs/schema
directory. <br>
    <br>
Note: Creating the deployment plan descriptor is a tedious and
error-prone job,
you can download <a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a>
to
assist you in this step. Please refer to <a
 href="http://www.dre.vanderbilt.edu/%7Emxiong/tutorial">this tutorial</a>
to see how you can use CoSMIC to automatically generate the descriptor
file.
    <p></p>
    <hr></li>
</dd>
<h2>Running the program </h2>
&gt;From different shells in&nbsp;<code>$CIAO_ROOT/docs/tutorials/Quoter/Simple/</code><code>descriptors/</code>
directory:
<ul>
  <li>Start NodeManagers (NodeDameon) by running runNodeDaemon.pl </li>
  <li>Start the execution manager
$CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o ior -i
Stock.dat&nbsp; </li>
</ul>
<p>The Stock.dat file describes the deployment daemons CIAO's
Execution_Manager
will contact to instantiate ComponentServer's, home's, and component
instances.
Each line specify the name of a installation "destination" and the
corresponding corbaloc IOR for the CIAO_Daemon.</p>
<ul type="square">
  <li><em>NOTE</em>: As one can see, we use the "Stock.dat" file to
instruct the Execution_Manager how to find the endpoint of each
individual NodeManager (i.e., Node Daemon) where component(s) will be
deployed, so this is non-standard. We plan to use Naming Service to do
this in the future. </li>
</ul>
<ul>
  <li> Start the plan_launcher by running
$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p
flattened_deploymentplan.cdp -k file://ior</li>
  <li>By now the components should be successfully deployed. You may
run the driver program to start the application. Open a new shell, keep
in the /Quoter/descriptors directory,&nbsp; and try the following
commands, see what happens in the component server<br>
  </li>
</ul>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start the distributor
service at a frequency of&nbsp; 3 hertz:<br>
&nbsp; &nbsp; &nbsp;&nbsp; <span style="color: rgb(51, 102, 255);">../Distributor/Distributor.exe
-o&nbsp;&nbsp; -r3</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Use the broker program to
subscribe to MSFT stock<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
 style="color: rgb(51, 102, 255);">../Broker/Broker.exe -s MSFT</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subscribe to IBM stock<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <span
 style="color: rgb(51, 102, 255);">../Broker/Broker.exe -s IBM</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unsubscribe to MSFT stock<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
 style="color: rgb(51, 102, 255);">../Broker/Broker -u MSFT</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Turn off the distribution
service:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
 style="color: rgb(51, 102, 255);">../Distributor/Distributor -f </span><br>
<br>
Please contact mxiong@dre.vanderbilt.edu if you have any questions.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
</body>
</html>
